package top.lyjwn.todo.weinxin.api.applet;

import com.alibaba.fastjson2.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import top.lyjwn.todo.weinxin.api.url.WXAppletUrl;
import top.lyjwn.todo.weinxin.applet.AppletAccessToken;
import top.lyjwn.todo.common.utils.http.HttpUtil;

/**
 * 发送客服消息
 * 当用户和小程序客服产生特定动作的交互时（具体动作列表请见下方说明），微信将会把消息数据推送给开发者，开发者可以在一段时间内（目前为 48 小时）调用客服接口，通过调用 发送客服消息接口 来发送消息给普通用户。此接口主要用于客服等有人工消息处理环节的功能，方便开发者为用户提供更加优质的服务。
 * <p>
 * 目前允许的动作列表如下，不同动作触发后，允许的客服接口下发消息条数和下发时限不同。
 */
@Component
public class CustomerServiceMessageSend {

    @Autowired
    private WXAppletUrl wxAppletUrl;

    private static final Logger log = LoggerFactory.getLogger(CustomerServiceMessageSend.class);

    private AppletAccessToken accessToken;

    public CustomerServiceMessageSend() {
    }

    public CustomerServiceMessageSend(AppletAccessToken accessToken) {
        this.accessToken = accessToken;
    }

    public String getUrl() {
        return wxAppletUrl.getCUSTOMERSERVICEMESSAGE_SEND().replace("#{ACCESS_TOKEN}", this.accessToken.getAccess_token());
    }


    public String sendMiniprogrampage(String openid, String title, String pagepath, String thumb_media_id) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("touser", openid);
        jsonObject.put("msgtype", "miniprogrampage");
        JSONObject miniprogrampage_jsonObject = new JSONObject();
        miniprogrampage_jsonObject.put("title", title);
        miniprogrampage_jsonObject.put("pagepath", pagepath);
        miniprogrampage_jsonObject.put("thumb_media_id", thumb_media_id);
        jsonObject.put("miniprogrampage", miniprogrampage_jsonObject);
        String res = HttpUtil.request(getUrl(), HttpUtil.METHOD_POST, jsonObject.toJSONString());
        return res;
//        JSONObject jsonObject1 = JSONObject.parseObject(res);
//        if (jsonObject1.getInteger("errcode") == 0 && jsonObject1.getString("errmsg").equals("ok")) {
//            return R.SUCCESS("发送成功");
//        } else {
//            return R.FAIL(jsonObject1.getInteger("errcode"), jsonObject1.getString("errmsg"));
//        }
    }

    public String sendText(String openid, String content) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("touser", openid);
        jsonObject.put("msgtype", "text");
        JSONObject miniprogrampage_jsonObject = new JSONObject();
        miniprogrampage_jsonObject.put("content", content);
        jsonObject.put("text", miniprogrampage_jsonObject);
        String res = HttpUtil.request(getUrl(), HttpUtil.METHOD_POST, jsonObject.toJSONString());
        return res;
//        JSONObject jsonObject1 = JSONObject.parseObject(res);
//        if (jsonObject1.getInteger("errcode") == 0 && jsonObject1.getString("errmsg").equals("ok")) {
//            return R.SUCCESS("发送成功");
//        } else {
//            return R.FAIL(jsonObject1.getInteger("errcode"), jsonObject1.getString("errmsg"));
//        }
    }



}
